package com.hopu.aop.springaop;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;



/**
 * 打印日志的通知类
 */
public class LogAdvise {

    private Logger logger = Logger.getLogger(LogAdvise.class);

    /**
     * 前置通知方法
     */
    public void preLog(){
        logger.info("这是前置通知方法");
    }

    /**
     * 后置通知方法
     */
    public void afterLog(){
        logger.info("这是后置通知方法");
    }

    /**
     * 环绕通知方法
     */
    public Object aroundLog(ProceedingJoinPoint joinPoint) throws Throwable {
        logger.info("这是环绕通知--前置执行");
        //调用原被代理者方法
        Object result = joinPoint.proceed();
        logger.info("这是环绕通知--后置执行");
        return result;
    }

    /**
     * 异常抛出方法
     */
    public void throwLog(){
        logger.info("方法抛出了异常");
    }

    /**
     * 方法返回执行的方法
     */
    public void returnLog(){
        logger.info("方法返回后执行");
    }
}
